package cn.iocoder.yudao.module.api.member.level;

import cn.iocoder.yudao.module.api.member.level.dto.MemberLevelRespDTO;
import cn.iocoder.yudao.module.api.member.user.enums.MemberExperienceBizTypeEnum;

/**
 * 用户等级 API 接口
 *
 * @author owen
 */
public interface MemberLevelApi {

    /**
     * 获得用户等级
     *
     * @param userId 用户编号
     * @return 用户等级
     */
    MemberLevelRespDTO getMemberLevelByUserId(Long userId);

    /**
     * 获得用户等级享受折扣
     *
     * @param userId 用户编号
     * @return 享受折扣
     */
    int getMemberLevelDiscountPercentByUserId(Long userId);

    /**
     * 增加用户经验
     *
     * @param userId     用户ID
     * @param experience 经验
     * @param bizType    业务类型 {@link MemberExperienceBizTypeEnum}
     * @param bizId      业务编号
     */
    void addExperience(Long userId, Integer experience, Integer bizType, String bizId);

    /**
     * 扣减用户经验
     *
     * @param userId     用户ID
     * @param experience 经验
     * @param bizType    业务类型 {@link MemberExperienceBizTypeEnum}
     * @param bizId      业务编号
     */
    void reduceExperience(Long userId, Integer experience, Integer bizType, String bizId);

}
